import axios from 'axios'
import { Capacitor } from '@capacitor/core'

// 判断是否为移动端
const isNative = Capacitor.isNativePlatform()

// API 基础地址配置
// 优先使用环境变量，如果没有则使用默认值
const getApiBaseUrl = () => {
  // 移动端：优先使用环境变量，如果没有则使用默认局域网地址
  if (isNative) {
    return import.meta.env.VITE_API_BASE_URL_NATIVE || import.meta.env.VITE_API_BASE_URL || 'http://192.168.31.42:3000/api'
  }
  
  // Web 端：开发环境使用代理，生产环境使用环境变量或默认地址
  if (import.meta.env.DEV) {
    return '/api'  // 开发环境使用 Vite 代理
  }
  
  // 生产环境：使用环境变量或默认地址
  // 确保环境变量包含完整的 API 路径（包含 /api）
  return import.meta.env.VITE_API_BASE_URL || 'http://localhost:3000/api'
}

const API_BASE_URL = getApiBaseUrl()

// 创建axios实例
const api = axios.create({
  baseURL: API_BASE_URL,
  timeout: 10000,
})

// 八字API接口类型定义
export interface BaziRequest {
  datetime: string
  gender: 0 | 1 // 0-女，1-男
  name?: string
  longitude?: number
  latitude?: number
  enableZiShiSupport?: boolean
}

export interface BaziResponse {
  // 根据实际API响应结构定义
  [key: string]: any
}

// 八字相关API
export const baziApi = {
  // 获取八字基本信息
  getBaziInfo: (params: BaziRequest) => 
    api.get('/bazi/info', { params }),
  
  // 获取日柱信息
  getDayInfo: (params: BaziRequest) => 
    api.get('/bazi/day', { params }),
  
  // 获取月柱信息
  getMonthInfo: (params: BaziRequest) => 
    api.get('/bazi/month', { params }),
  
  // 获取时柱信息
  getHourInfo: (params: BaziRequest) => 
    api.get('/bazi/hour', { params }),
  
  // 获取大运列表（包含流年列表）
  getDecadeList: (params: { datetime: string; gender: number; enableZiShiSupport?: boolean }) => 
    api.post('/bazi/decade', params),
  
  // 获取流月列表
  getMonthList: (params: { datetime: string; gender: number; decadeIndex: number; fortuneIndex: number; enableZiShiSupport?: boolean }) => 
    api.post('/bazi/month', params),
  
  // 获取流日列表
  getDayList: (params: { datetime: string; gender: number; decadeIndex: number; fortuneIndex: number; monthIndex: number; enableZiShiSupport?: boolean }) => 
    api.post('/bazi/day', params),
  
  // 获取流时列表
  getHourList: (params: { datetime: string; gender: number; decadeIndex: number; fortuneIndex: number; monthIndex: number; dayIndex: number; enableZiShiSupport?: boolean }) => 
    api.post('/bazi/hour', params),
  
  // 获取格局信息
  getPatternInfo: (params: BaziRequest) => 
    api.get('/bazi/pattern', { params }),
}

// 文档相关API
export interface DocsQueryResponse {
  b01: string[]
  b02: string[]
  b03: string[]
  b04: string[]
  b05: string[]
  b06: string[]
  b07: string[]
  b08: string[]
  b09: string[]
  b10: string[]
  b11: string[]
}

export interface DocsContentItem {
  originalText: string
  translatedText: string | null
  annotations: any | null
  orderNum: number
}

export interface DocsContentResponse {
  contents: DocsContentItem[]
  error?: string
}

export const docsApi = {
  // 查询文档标题列表
  queryDocs: (bazi: string) => 
    api.get<DocsQueryResponse>('/docs/query', { params: { bazi } }),
  
  // 查询文档内容
  getContent: (bookId: string, title: string) => 
    api.get<DocsContentResponse>('/docs/content', { params: { bookId, title } }),
}

export default api
